$fn = 100;
dis = 35;
hei = 20;
wid = 10;
module base_holder()
{
union()
{
difference()
{
union()
{
hull()
{
translate([ -4, -4, -0 ]) cube([ 1, 8, wid ]);
translate([ 12.5 - 13 - 19.8 - 5, -7.5, -0 ]) cube([ 0.0001, 15, wid ]);
}
translate([ 0, 0, 0 ]) scale([ 3.3, 2.75, 0.5 ]) cylinder(d = 12, h = wid*2);
}
translate([ 9, -18, -1 ]) cube([ 15, 36, wid+2 ]);
translate([ 0, 0, -1 ]) scale([ 3.3, 2.75, 0.5 ]) cylinder(d = wid, h = wid*2+4);
}
translate([ 9, 13.1, 0 ]) cylinder(h = wid, d = 2.95);
translate([ 9, -13.1, 0 ]) cylinder(h = wid, d = 2.95);
}
}
union()
{
for (i = [0:3]) {
translate([ 0, dis * i, 0 ]) base_holder();
};
translate([ -28.5, -7.5, 0 ]) cube([ 3.5, dis * 3 + 15, wid ]);
};
// p2
module top_holder() {
union() {
difference()
{
union()
{
hull()
{
translate([ -4, -4, -0 ]) cube([ 1, 8, wid ]);
translate([ 12.5 - 13 - 19.8 -11, -7.5, -0 ]) cube([ 0.0001, 15, wid ]);
}
translate([ 0, 0, 0 ]) cylinder(h = wid, d = 12);
}
hull()
{
translate([ 0, 0, -1 ]) cylinder(h = wid+2, d = 8);
translate([ 1, 0, -1 ]) cylinder(h = wid+2, d = 7.5);
}
translate([ 3.5, -18, -1 ]) cube([ 15, 36, wid+5 ]);
};
translate([ 3.3, -3.9, 0 ]) cylinder(h = wid, d = 2.2);
translate([ 3.3, 3.9, 0 ]) cylinder(h = wid, d = 2.2);
}
}
union()
{
translate([ -0.5, 0, hei ]) union()
{
for (i = [0:3]) {
translate([ 0, dis * i, 0 ]) top_holder();
};
translate([ -34, -7.5, 0 ]) cube([ 3, dis * 3 + 15, wid ]);
};
};